package com.share.four.ftp;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class UploadFile {


	/** 
	 * Description: 向FTP服务器上传文件 
	 * @param ip FTP服务器hostname 
	 * @param port FTP服务器端口 
	 * @param username FTP登录账号 
	 * @param password FTP登录密码 
	 * @param path FTP服务器保存目录 
	 * @param filename 上传到FTP服务器上的文件名 
	 * @param input 输入流 
	 * @return 成功返回true，否则返回false 
	 */  
	public static boolean uploadFile(String ip, int port, String username, String password, String path, String filename, InputStream input) {  
		boolean success = false;  
		FTPClient ftp = new FTPClient();  
		try {  
			int reply;  
			ftp.connect(ip, port);//连接FTP服务器  
			//如果采用默认端口，可以使用ftp.connect(url)的方式直接连接FTP服务器  
			ftp.login(username, password);//登录  
			reply = ftp.getReplyCode();  
			System.out.println("回应： " + reply);
			if (!FTPReply.isPositiveCompletion(reply)) {  
				ftp.disconnect();  
				return success;  
			}  
			//方式一：path与filename分开
//			ftp.changeWorkingDirectory(path);  
//			ftp.storeFile(filename, input);  
			
			//方式二：path+filename=remote
			String remote = path + filename;
			ftp.storeFile(remote, input);

			input.close();  
			ftp.logout();  
			success = true;  
		} catch (IOException e) {  
			e.printStackTrace();  
		} finally {  
			if (ftp.isConnected()) {  
				try {  
					ftp.disconnect();  
				} catch (IOException ioe) {  
				}  
			}  
		}  

		return success;  
	}
	
	public static void main(String[] args) throws Exception {
		test1();
		
//		String ip = "ip";
//		int port = 21;
//		String username = "appuser";
//		String password = "xxx1234567890"; 
//		String path = "/opt/applog/";
//		String filename = "1.txt";
//		InputStream input = new FileInputStream("1.txt");
//		
//		uploadFile(ip, port, username, password, path, filename, input);
	}

	private static void test1() throws FileNotFoundException {
		String ip = "ip";
		int port = 21;
		String username = "loadora";
		String password = "Det2Ft4p"; 
//		String username = "appuser";
//		String password = "xxx1234567890"; 
		String path = "/sys_back/allsys/loadora/pss_gui/ri/gosh/ca/queryReport/";
		String filename = "1.txt";
		InputStream input = new FileInputStream("1.txt");
		
		uploadFile(ip, port, username, password, path, filename, input);
	}

}
